| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164 | 1
1
1
1
1
1
1
1
16
16
1
2
1
1
2
1
1
1
1
1
1
1
1
1
1
| System.register(['core-js', 'aurelia-logging', 'aurelia-metadata', 'aurelia-loader', 'aurelia-dependency-injection', './view-compiler', './resource-registry', './module-analyzer'], function (_export) {
'use strict';
var core, LogManager, Origin, Loader, TemplateRegistryEntry, Container, ViewCompiler, ResourceRegistry, ViewResources, ModuleAnalyzer, logger, ViewEngine;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
function ensureRegistryEntry(loader, urlOrRegistryEntry) {
if (urlOrRegistryEntry instanceof TemplateRegistryEntry) {
return Promise.resolve(urlOrRegistryEntry);
}
return loader.loadTemplate(urlOrRegistryEntry);
}
return {
setters: [function (_coreJs) {
core = _coreJs['default'];
}, function (_aureliaLogging) {
LogManager = _aureliaLogging;
}, function (_aureliaMetadata) {
Origin = _aureliaMetadata.Origin;
}, function (_aureliaLoader) {
Loader = _aureliaLoader.Loader;
TemplateRegistryEntry = _aureliaLoader.TemplateRegistryEntry;
}, function (_aureliaDependencyInjection) {
Container = _aureliaDependencyInjection.Container;
}, function (_viewCompiler) {
ViewCompiler = _viewCompiler.ViewCompiler;
}, function (_resourceRegistry) {
ResourceRegistry = _resourceRegistry.ResourceRegistry;
ViewResources = _resourceRegistry.ViewResources;
}, function (_moduleAnalyzer) {
ModuleAnalyzer = _moduleAnalyzer.ModuleAnalyzer;
}],
execute: function () {
logger = LogManager.getLogger('templating');
ViewEngine = (function () {
function ViewEngine(loader, container, viewCompiler, moduleAnalyzer, appResources) {
_classCallCheck(this, ViewEngine);
this.loader = loader;
this.container = container;
this.viewCompiler = viewCompiler;
this.moduleAnalyzer = moduleAnalyzer;
this.appResources = appResources;
}
ViewEngine.inject = function inject() {
return [Loader, Container, ViewCompiler, ModuleAnalyzer, ResourceRegistry];
};
ViewEngine.prototype.loadViewFactory = function loadViewFactory(urlOrRegistryEntry, compileOptions, associatedModuleId) {
var _this = this;
return ensureRegistryEntry(this.loader, urlOrRegistryEntry).then(function (viewRegistryEntry) {
if (viewRegistryEntry.onReady) {
return viewRegistryEntry.onReady;
}
return viewRegistryEntry.onReady = _this.loadTemplateResources(viewRegistryEntry, associatedModuleId).then(function (resources) {
viewRegistryEntry.setResources(resources);
var viewFactory = _this.viewCompiler.compile(viewRegistryEntry.template, resources, compileOptions);
viewRegistryEntry.setFactory(viewFactory);
return viewFactory;
});
});
};
ViewEngine.prototype.loadTemplateResources = function loadTemplateResources(viewRegistryEntry, associatedModuleId) {
var resources = new ViewResources(this.appResources, viewRegistryEntry.id),
dependencies = viewRegistryEntry.dependencies,
importIds,
names;
if (dependencies.length === 0 && !associatedModuleId) {
return Promise.resolve(resources);
}
importIds = dependencies.map(function (x) {
return x.src;
});
names = dependencies.map(function (x) {
return x.name;
});
logger.debug('importing resources for ' + viewRegistryEntry.id, importIds);
return this.importViewResources(importIds, names, resources, associatedModuleId);
};
ViewEngine.prototype.importViewModelResource = function importViewModelResource(moduleImport, moduleMember) {
var _this2 = this;
return this.loader.loadModule(moduleImport).then(function (viewModelModule) {
var normalizedId = Origin.get(viewModelModule).moduleId,
resourceModule = _this2.moduleAnalyzer.analyze(normalizedId, viewModelModule, moduleMember);
if (!resourceModule.mainResource) {
throw new Error('No view model found in module "' + moduleImport + '".');
}
resourceModule.analyze(_this2.container);
return resourceModule.mainResource;
});
};
ViewEngine.prototype.importViewResources = function importViewResources(moduleIds, names, resources, associatedModuleId) {
var _this3 = this;
return this.loader.loadAllModules(moduleIds).then(function (imports) {
var i,
ii,
analysis,
normalizedId,
current,
associatedModule,
container = _this3.container,
moduleAnalyzer = _this3.moduleAnalyzer,
allAnalysis = new Array(imports.length);
//analyze and register all resources first
//this enables circular references for global refs
//and enables order independence
for (i = 0, ii = imports.length; i < ii; ++i) {
current = imports[i];
normalizedId = Origin.get(current).moduleId;
analysis = moduleAnalyzer.analyze(normalizedId, current);
analysis.analyze(container);
analysis.register(resources, names[i]);
allAnalysis[i] = analysis;
}
if (associatedModuleId) {
associatedModule = moduleAnalyzer.getAnalysis(associatedModuleId);
if (associatedModule) {
associatedModule.register(resources);
}
}
//cause compile/load of any associated views second
//as a result all globals have access to all other globals during compilation
for (i = 0, ii = allAnalysis.length; i < ii; ++i) {
allAnalysis[i] = allAnalysis[i].load(container);
}
return Promise.all(allAnalysis).then(function () {
return resources;
});
});
};
return ViewEngine;
})();
_export('ViewEngine', ViewEngine);
}
};
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3RlbXBsYXRpbmcvc3JjL3ZpZXctZW5naW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozt5SUFTSSxNQUFNLEVBVUcsVUFBVTs7OztBQVJ2QixXQUFTLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBQztBQUN0RCxRQUFHLGtCQUFrQixZQUFZLHFCQUFxQixFQUFDO0FBQ3JELGFBQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBQzVDOztBQUVELFdBQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0dBQ2hEOzs7Ozs7OztnQ0FmTyxNQUFNOzs4QkFDTixNQUFNOzZDQUFDLHFCQUFxQjs7OENBQzVCLFNBQVM7O21DQUNULFlBQVk7OzJDQUNaLGdCQUFnQjt3Q0FBRSxhQUFhOzt1Q0FDL0IsY0FBYzs7O0FBRWxCLFlBQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQzs7QUFVbEMsZ0JBQVU7QUFFVixpQkFGQSxVQUFVLENBRVQsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBQztnQ0FGL0QsVUFBVTs7QUFHbkIsY0FBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsY0FBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDM0IsY0FBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7QUFDakMsY0FBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7QUFDckMsY0FBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7U0FDbEM7O0FBUlUsa0JBQVUsQ0FDZCxNQUFNLEdBQUEsa0JBQUc7QUFBRSxpQkFBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsQ0FB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RUFBRSxFQUFFLENBQUMsRUFBQztBQUM5Qyx5QkFBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDakQ7O0FBRUQsbUJBQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUM7cUJBQU0sU0FBUzthQUFBLENBQUMsQ0FBQztXQUN2RCxDQUFDLENBQUM7U0FDSjs7ZUE3RlUsVUFBVTs7OzRCQUFWLFVBQVUiLCJmaWxlIjoiL1VzZXJzL0Vpc2VuYmVyZ0VmZmVjdC9Eb2N1bWVudHMvR2l0SHViL1RoZSBEdXJhbmRhbCBQcm9qZWN0L2F1cmVsaWEvdGVtcGxhdGluZy9zcmMvdmlldy1lbmdpbmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29yZSBmcm9tICdjb3JlLWpzJztcbmltcG9ydCAqIGFzIExvZ01hbmFnZXIgZnJvbSAnYXVyZWxpYS1sb2dnaW5nJztcbmltcG9ydCB7T3JpZ2lufSBmcm9tICdhdXJlbGlhLW1ldGFkYXRhJztcbmltcG9ydCB7TG9hZGVyLFRlbXBsYXRlUmVnaXN0cnlFbnRyeX0gZnJvbSAnYXVyZWxpYS1sb2FkZXInO1xuaW1wb3J0IHtDb250YWluZXJ9IGZyb20gJ2F1cmVsaWEtZGVwZW5kZW5jeS1pbmplY3Rpb24nO1xuaW1wb3J0IHtWaWV3Q29tcGlsZXJ9IGZyb20gJy4vdmlldy1jb21waWxlcic7XG5pbXBvcnQge1Jlc291cmNlUmVnaXN0cnksIFZpZXdSZXNvdXJjZXN9IGZyb20gJy4vcmVzb3VyY2UtcmVnaXN0cnknO1xuaW1wb3J0IHtNb2R1bGVBbmFseXplcn0gZnJvbSAnLi9tb2R1bGUtYW5hbHl6ZXInO1xuXG52YXIgbG9nZ2VyID0gTG9nTWFuYWdlci5nZXRMb2dnZXIoJ3RlbXBsYXRpbmcnKTtcblxuZnVuY3Rpb24gZW5zdXJlUmVnaXN0cnlFbnRyeShsb2FkZXIsIHVybE9yUmVnaXN0cnlFbnRyeSl7XG4gIGlmKHVybE9yUmVnaXN0cnlFbnRyeSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVnaXN0cnlFbnRyeSl7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1cmxPclJlZ2lzdHJ5RW50cnkpO1xuICB9XG5cbiAgcmV0dXJuIGxvYWRlci5sb2FkVGVtcGxhdGUodXJsT3JSZWdpc3RyeUVudHJ5KTtcbn1cblxuZXhwb3J0IGNsYXNzIFZpZXdFbmdpbmUge1xuICBzdGF0aWMgaW5qZWN0KCkgeyByZXR1cm4gW0xvYWRlciwgQ29udGFpbmVyLCBWaWV3Q29tcGlsZXIsIE1vZHVsZUFuYWx5emVyLCBSZXNvdXJjZVJlZ2lzdHJ5XTsgfVxuICBjb25zdHJ1Y3Rvcihsb2FkZXIsIGNvbnRhaW5lciwgdmlld0NvbXBpbGVyLCBtb2R1bGVBbmFseXplciwgYXBwUmVzb3VyY2VzKXtcbiAgICB0aGlzLmxvYWRlciA9IGxvYWRlcjtcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0aGlzLnZpZXdDb21waWxlciA9IHZpZXdDb21waWxlcjtcbiAgICB0aGlzLm1vZHVsZUFuYWx5emVyID0gbW9kdWxlQW5hbHl6ZXI7XG4gICAgdGhpcy5hcHBSZXNvdXJjZXMgPSBhcHBSZXNvdXJjZXM7XG4gIH1cblxuICBsb2FkVmlld0ZhY3RvcnkodXJsT3JSZWdpc3RyeUVudHJ5LCBjb21waWxlT3B0aW9ucywgYXNzb2NpYXRlZE1vZHVsZUlkKXtcbiAgICByZXR1cm4gZW5zdXJlUmVnaXN0cnlFbnRyeSh0aGlzLmxvYWRlciwgdXJsT3JSZWdpc3RyeUVudHJ5KS50aGVuKHZpZXdSZWdpc3RyeUVudHJ5ID0+IHtcbiAgICAgIGlmKHZpZXdSZWdpc3RyeUVudHJ5Lm9uUmVhZHkpe1xuICAgICAgICByZXR1cm4gdmlld1JlZ2lzdHJ5RW50cnkub25SZWFkeTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZpZXdSZWdpc3RyeUVudHJ5Lm9uUmVhZHkgPSB0aGlzLmxvYWRUZW1wbGF0ZVJlc291cmNlcyh2aWV3UmVnaXN0cnlFbnRyeSwgYXNzb2NpYXRlZE1vZHVsZUlkKS50aGVuKHJlc291cmNlcyA9PiB7XG4gICAgICAgIHZpZXdSZWdpc3RyeUVudHJ5LnNldFJlc291cmNlcyhyZXNvdXJjZXMpO1xuICAgICAgICB2YXIgdmlld0ZhY3RvcnkgPSB0aGlzLnZpZXdDb21waWxlci5jb21waWxlKHZpZXdSZWdpc3RyeUVudHJ5LnRlbXBsYXRlLCByZXNvdXJjZXMsIGNvbXBpbGVPcHRpb25zKTtcbiAgICAgICAgdmlld1JlZ2lzdHJ5RW50cnkuc2V0RmFjdG9yeSh2aWV3RmFjdG9yeSk7XG4gICAgICAgIHJldHVybiB2aWV3RmFjdG9yeTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZFRlbXBsYXRlUmVzb3VyY2VzKHZpZXdSZWdpc3RyeUVudHJ5LCBhc3NvY2lhdGVkTW9kdWxlSWQpe1xuICAgIHZhciByZXNvdXJjZXMgPSBuZXcgVmlld1Jlc291cmNlcyh0aGlzLmFwcFJlc291cmNlcywgdmlld1JlZ2lzdHJ5RW50cnkuaWQpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSB2aWV3UmVnaXN0cnlFbnRyeS5kZXBlbmRlbmNpZXMsXG4gICAgICAgIGltcG9ydElkcywgbmFtZXM7XG5cbiAgICBpZihkZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwICYmICFhc3NvY2lhdGVkTW9kdWxlSWQpe1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNvdXJjZXMpO1xuICAgIH1cblxuICAgIGltcG9ydElkcyA9IGRlcGVuZGVuY2llcy5tYXAoeCA9PiB4LnNyYyk7XG4gICAgbmFtZXMgPSBkZXBlbmRlbmNpZXMubWFwKHggPT4geC5uYW1lKTtcbiAgICBsb2dnZXIuZGVidWcoYGltcG9ydGluZyByZXNvdXJjZXMgZm9yICR7dmlld1JlZ2lzdHJ5RW50cnkuaWR9YCwgaW1wb3J0SWRzKTtcblxuICAgIHJldHVybiB0aGlzLmltcG9ydFZpZXdSZXNvdXJjZXMoaW1wb3J0SWRzLCBuYW1lcywgcmVzb3VyY2VzLCBhc3NvY2lhdGVkTW9kdWxlSWQpO1xuICB9XG5cbiAgaW1wb3J0Vmlld01vZGVsUmVzb3VyY2UobW9kdWxlSW1wb3J0LCBtb2R1bGVNZW1iZXIpe1xuICAgIHJldHVybiB0aGlzLmxvYWRlci5sb2FkTW9kdWxlKG1vZHVsZUltcG9ydCkudGhlbih2aWV3TW9kZWxNb2R1bGUgPT4ge1xuICAgICAgdmFyIG5vcm1hbGl6ZWRJZCA9IE9yaWdpbi5nZXQodmlld01vZGVsTW9kdWxlKS5tb2R1bGVJZCxcbiAgICAgICAgICByZXNvdXJjZU1vZHVsZSA9IHRoaXMubW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZShub3JtYWxpemVkSWQsIHZpZXdNb2RlbE1vZHVsZSwgbW9kdWxlTWVtYmVyKTtcblxuICAgICAgaWYoIXJlc291cmNlTW9kdWxlLm1haW5SZXNvdXJjZSl7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gdmlldyBtb2RlbCBmb3VuZCBpbiBtb2R1bGUgXCIke21vZHVsZUltcG9ydH1cIi5gKTtcbiAgICAgIH1cblxuICAgICAgcmVzb3VyY2VNb2R1bGUuYW5hbHl6ZSh0aGlzLmNvbnRhaW5lcik7XG5cbiAgICAgIHJldHVybiByZXNvdXJjZU1vZHVsZS5tYWluUmVzb3VyY2U7XG4gICAgfSk7XG4gIH1cblxuICBpbXBvcnRWaWV3UmVzb3VyY2VzKG1vZHVsZUlkcywgbmFtZXMsIHJlc291cmNlcywgYXNzb2NpYXRlZE1vZHVsZUlkKXtcbiAgICByZXR1cm4gdGhpcy5sb2FkZXIubG9hZEFsbE1vZHVsZXMobW9kdWxlSWRzKS50aGVuKGltcG9ydHMgPT4ge1xuICAgICAgdmFyIGksIGlpLCBhbmFseXNpcywgbm9ybWFsaXplZElkLCBjdXJyZW50LCBhc3NvY2lhdGVkTW9kdWxlLFxuICAgICAgICAgIGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLFxuICAgICAgICAgIG1vZHVsZUFuYWx5emVyID0gdGhpcy5tb2R1bGVBbmFseXplcixcbiAgICAgICAgICBhbGxBbmFseXNpcyA9IG5ldyBBcnJheShpbXBvcnRzLmxlbmd0aCk7XG5cbiAgICAgIC8vYW5hbHl6ZSBhbmQgcmVnaXN0ZXIgYWxsIHJlc291cmNlcyBmaXJzdFxuICAgICAgLy90aGlzIGVuYWJsZXMgY2lyY3VsYXIgcmVmZXJlbmNlcyBmb3IgZ2xvYmFsIHJlZnNcbiAgICAgIC8vYW5kIGVuYWJsZXMgb3JkZXIgaW5kZXBlbmRlbmNlXG4gICAgICBmb3IoaSA9IDAsIGlpID0gaW1wb3J0cy5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgICAgY3VycmVudCA9IGltcG9ydHNbaV07XG4gICAgICAgIG5vcm1hbGl6ZWRJZCA9IE9yaWdpbi5nZXQoY3VycmVudCkubW9kdWxlSWQ7XG5cbiAgICAgICAgYW5hbHlzaXMgPSBtb2R1bGVBbmFseXplci5hbmFseXplKG5vcm1hbGl6ZWRJZCwgY3VycmVudCk7XG4gICAgICAgIGFuYWx5c2lzLmFuYWx5emUoY29udGFpbmVyKTtcbiAgICAgICAgYW5hbHlzaXMucmVnaXN0ZXIocmVzb3VyY2VzLCBuYW1lc1tpXSk7XG5cbiAgICAgICAgYWxsQW5hbHlzaXNbaV0gPSBhbmFseXNpcztcbiAgICAgIH1cblxuICAgICAgaWYoYXNzb2NpYXRlZE1vZHVsZUlkKXtcbiAgICAgICAgYXNzb2NpYXRlZE1vZHVsZSA9IG1vZHVsZUFuYWx5emVyLmdldEFuYWx5c2lzKGFzc29jaWF0ZWRNb2R1bGVJZCk7XG5cbiAgICAgICAgaWYoYXNzb2NpYXRlZE1vZHVsZSl7XG4gICAgICAgICAgYXNzb2NpYXRlZE1vZHVsZS5yZWdpc3RlcihyZXNvdXJjZXMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vY2F1c2UgY29tcGlsZS9sb2FkIG9mIGFueSBhc3NvY2lhdGVkIHZpZXdzIHNlY29uZFxuICAgICAgLy9hcyBhIHJlc3VsdCBhbGwgZ2xvYmFscyBoYXZlIGFjY2VzcyB0byBhbGwgb3RoZXIgZ2xvYmFscyBkdXJpbmcgY29tcGlsYXRpb25cbiAgICAgIGZvcihpID0gMCwgaWkgPSBhbGxBbmFseXNpcy5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgICAgYWxsQW5hbHlzaXNbaV0gPSBhbGxBbmFseXNpc1tpXS5sb2FkKGNvbnRhaW5lcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChhbGxBbmFseXNpcykudGhlbigoKSA9PiByZXNvdXJjZXMpO1xuICAgIH0pO1xuICB9XG59XG4iXX0= |